#ifndef INETWORKMANAGER_HPP
#define INETWORKMANAGER_HPP

#include <string>
#include "InterfaceConfig.h"
#include "NetworkEvent.h"

class NetworkEventCallback;
class NetworkService
{
private:
    
public:

    virtual void initialize() = 0;
    virtual void configureInterface(const std::string& ifName, const InterfaceConfig& config) = 0;
    virtual std::string ngetMacAddress(std::string& ifName) = 0;
    virtual std::string ngetIPAddr(std::string& ifName) = 0;
    virtual bool nsetIPAddr(std::string& ifName, std::string& ipv4addr, int prefixlen) = 0;
    virtual bool nsetMacAddress(std::string& ifName, std::string& macaddress) = 0;
    virtual bool nsetInterfaceStatus(std::string& ifName, bool upDown) = 0;
    virtual void registerCallback(NetworkEventCallback* callback) = 0;
    virtual void unregisterCallback(NetworkEventCallback* callback) = 0;
    virtual bool naddRoute(const std::string& ifName, const std::string& dst, const std::string& gw, int type, int prefixLength) = 0;
    virtual bool nremoveRoute(const std::string& ifName, const std::string& dst, const std::string& gw, int type, int prefixLength) = 0;
    virtual void loadFromFile(const std::string filePath);
};

#endif